package com.leetcode.offer;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author zfl
 * @Classname FirstUniqChar
 * @Description 第一个只出现一次的字符
 * @Date 2020/11/10 15:38
 */
public class FirstUniqChar {

    /**
     * @param s
     * @return
     * 采用LinkedHashMap 有序的哈希表
     * 执行用时：24 ms, 在所有 Java 提交中击败了68.21%的用户
     * 内存消耗：38.7 MB, 在所有 Java 提交中击败了95.23的用户
     */
    public static char firstUniqChar(String s) {
        Map<Character,Boolean> map = new LinkedHashMap<Character, Boolean>();
        char[] chars = s.toCharArray();
        // 注意采用的是map.containsKey()
        for (Character c : chars) {
            map.put(c,!map.containsKey(c));
        }
        for(Map.Entry<Character,Boolean> d : map.entrySet()) {
            if(d.getValue()) {
                return d.getKey();
            }
        }
        return ' ';
    }
}
